/**
 * 内部封装一个Customer[],提供对Customer数据的增删改查操作
 * @author shkstart
 *
 */
public class CustomerList {

    private Customer[] customers;   //用来保存客户对象的数组
    private int total;  //记录已保存的客户对象数量

    /**
     * 构造器，用来初始化customers数组
     * @param totalCustomer : 指定customers数组的最大空间
     */
    public CustomerList(int totalCustomer) {//构造器
        customers = new Customer[totalCustomer];
    }

    /**
     * 添加指定的客户到数组中
     * @param customer
     * @return 添加是否成功,true-成功，false-失败
     */
    public boolean addCustomer(Customer customer) {

        if (total>= customers.length) {//对象数组满了，存储失败
            return false;
        }
        //方式一：
//        customers[total]=customer;
//        total++;
        //方式二：
        customers[total++]=customer;//将对象添加到对象数组末尾
        return true;
    }

    /**
     * 修改指定索引位置的客户信息
     * @param index 索引位置
     * @return true：修改成功  false：修改失败
     */
    public boolean replaceCustomer(int index,Customer customer){
        if (index < 0 || index >= total) {
            return false;
        }
        customers[index]=customer;
        return true;
    }

    /**
     * 删除指定索引位置的客户信息
     * @param index 索引位置
     * @return true：删除成功  false：删除失败
     */
    public boolean deleteCustomer(int index){
        if (index < 0 || index >= total) {
            return false;
        }
        //把索引位置的数据交换到最后，并置空就可以删除了
        for (int i = index; i < total-1 ; i++) {
            customers[index]=customers[index+1];
        }
        //方式一：
//        customers[total-1]=null;
//        total--;
        //方式二：
        customers[--total]=null;
        return true;
    }

    /**
     * 获取所有客户对象信息
     * @return
     */
    public Customer[] getAllCustomer(){
        Customer[] cust = new Customer[total];
        for (int i = 0; i < total ; i++) {
            cust[i]=customers[i];
        }
        return cust;
    }

    /**
     * 返回指定索引位置上的客户信息
     * @param index
     * @return 如果找到元素，则返回；如果没找到，则返回null
     */
    public Customer getCustomer(int index){

        if (index <=0 || index >total) {
            return null;
        }
        Customer cust=customers[index-1];
        return cust;
    }

    /**
     * 获取客户数量
     * @return
     */
    public int getTotal() {
        return total;
    }
}
